Some computer systems use nonvolatile memory devices for the storage of firmware. From time to time, the firmware needs to be updated in order to accommodate new devices, configurations, or capacities for the computer system. The firmware also needs to be updated in order to fix errors in the current version of the firmware.
One example of a computer system is the IBM Personal Computer (PC) system developed by IBM Corporation of Armonk, N.Y. Some variations of the IBM PC store firmware including the basic input/output system (BIOS) in nonvolatile memory. The BIOS includes data and instructions so that the operating system can access the hardware and other resources of the computer system. An upgrade to the BIOS might be necessary for any number of reasons.
One reason the BIOS may need to be upgraded is to accommodate changes in configuration of the computer system. For example, the BIOS might need to be upgraded in order to support a new peripheral. Thus installing a disk drive that has a substantially greater capacity than what was allowed for in the current version of the BIOS may require an update to the BIOS. Another reason the BIOS may have to be upgraded is to support a device not provided for in the current version of the BIOS. Another reason for updating the BIOS is to correct errors in the current version of the BIOS.
In order to replace, modify, or update firmware in such a computer system, the nonvolatile memory device has to be replaced or reprogrammed depending upon the type of nonvolatile memory used to store the firmware. The various types of nonvolatile memory devices used to store firmware include read only memory (ROM), programmable read only memory (PROM), and erasable programmable read only memory (EPROM).
For some computer systems the replace or reprogram operation requires invasive procedures. For example, replacement might require removing a portion of the computer housing and disconnecting a ROM device. Disconnecting the ROM device might even require desoldering the ROM device from the system board.
Alternatively, even if the nonvolatile memory device is reprogrammable, some types of nonvolatile memory require resources such as ultraviolet light or voltages which are not ordinarily provided within the typical computer system in order to accomplish the reprogramming operation. Thus, even though the nonvolatile memory is reprogrammable, the nonvolatile memory might have to be removed, reprogrammed, and then subsequently placed back into the computer system in order to accomplish the update procedure.
One type of nonvolatile memory used for storing firmware is flash electrically erasable programmable read only memory (flash EEPROM). The use of flash memory permits non-invasive updating procedures so that the nonvolatile memory can be updated from an update file.
The nonvolatile memory is typically organized into logical areas. The memory mapping of these areas is also stored within the nonvolatile memory. A memory update program (MUP) can be used to update a selected logical area. A MUP obtains the logical area memory mapping from the nonvolatile memory. A user selects the logical area to be updated by MUP. The selected logical area is erased. The selected logical area is then reprogrammed by copying a memory data image from an update file into that logical area. The memory data image is the updated version of the selected logical area.
One disadvantage of this technique is that sections cannot be added or substantially altered in size. The nonvolatile memory logical areas adhere to a memory mapping that updates must also follow. The processor retrieves an exact image of the logical area to be replaced or upgraded from the update file. Thus there must be a one-to-one correspondence between the logical areas before the update and the logical areas after the update. The ability to update the nonvolatile memory is constrained by the memory mappings defined by the current contents of the nonvolatile memory.
As a result of the inability to change size or number of logical areas, the location of various components of the firmware cannot be relocated using the update process described above. For example, the update process may not be able to install an updated BIOS that is larger or located in a different position within the nonvolatile memory than the currently installed version of the BIOS. Thus future versions of BIOS are constrained by limitations placed upon the currently installed version of the BIOS.
Given that computer systems may have different memory mappings for their firmware, distinct memory data images may be required for the logical areas defined by the current version of the firmware in each computer system. This may require distribution of separate update files for each type of computer system, for example, whenever an updated BIOS becomes available. In other words, for each version of BIOS generated a number of different update files must be created to accommodate updating a variety of computer systems in accordance with their distinct memory maps.
Thus a number of disadvantages result because of the dependency placed upon the current contents of the nonvolatile memory for information about the updates to the nonvolatile memory.